package plugins.evaluation;

import com.alibaba.excel.util.StringUtils;
import kd.bos.cache.CacheFactory;
import kd.bos.cache.DistributeSessionlessCache;
import kd.bos.form.events.SetFilterEvent;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.sdk.plugin.Plugin;

import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;

/**
 * 标准单据列表插件
 */
public class ShowEvalution extends AbstractListPlugin implements Plugin {

    boolean hasDishname = false; // 新增标志位，标记用户是否有菜品记录
    String merchantName = null; // 用于存储商户名称
    String nameValue = null; // 用于存储菜品名称

    @Override
    public void afterCreateNewData(EventObject e) {
        super.afterCreateNewData(e);
        // 从缓存获取数据
        DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache("customRegion");

        // 获取缓存中的字段值
        // 注意：如果缓存中没有这些键，get方法会返回null
        nameValue = cache.get("evaluation_name");
        merchantName = cache.get("evalutaion_merchantName");

        // 清除缓存中的值
        cache.remove("evaluation_name");
        cache.remove("evalutaion_merchantName");

        // 如果缓存中没有值，则设置默认值
        if (StringUtils.isEmpty(nameValue)) {
            nameValue = "未选择评价名称";
        } else {
            hasDishname = true; // 标记为有菜品记录
        }
    }

    @Override
    public void setFilter(SetFilterEvent e) {
        super.setFilter(e);

        // 如果有菜品记录，则添加过滤条件
        if (hasDishname) {

            // 设置过滤条件
            QFilter filter = new QFilter("dcb4_evaluationdishes.name", QCP.equals, nameValue).and(
                    new QFilter("dcb4_evaluationmerchant.name", QCP.equals, merchantName)
            );

            // 将过滤条件添加到事件中
            e.addCustomQFilter(filter);
        } else {
            // 如果没有菜品记录，则不添加任何过滤条件
            super.setFilter(e);
        }
    }

}